// -*- coding: utf-8 -*- 
/**
 * Project: AlgorithmsLearn
 *
 * @author: yanking
 * Create time: 2022-04-20 14:29
 * IDE: IntelliJ IDEA
 * Introduction:
 */
package com.LeetCodeT.DateTrain;

import org.junit.jupiter.api.Test;

import java.util.PriorityQueue;

// 最长文件路径
public class LengthLongestPath {
    /*
        根据给定的字符串输出当前文件目录下的最长文件路径
        栈操作模拟题：除去栈顶的文件目录名称外，其他元素进栈的时候都需要在前面添加’/‘符号
        如何区分同级目录？
        \n之后带的\t的个数
        如何判断给定路径是否存在文件？
        文件的后缀.xxx
        DFS实现:深度优先遍历
        划分目录层级，递归求深度
     */

    public int lengthLongestPath(String input) {
        return dfs(input, 1);
    }

    public int dfs(String input, int t) {
        StringBuilder slice = new StringBuilder("\n");
        String s = slice.toString();
        String[] split = input.split(s);
        String head = split[0];
        StringBuilder ans = new StringBuilder();
        int HL = head.length();
        int max = 0;
        int n = split.length;
        for (int i = 1; i < n; i++) {
            max = Math.max(max, dfs(split[i], t + 1));
        }
        return max + HL;
    }


    @Test
    public void shout() {
        String s = "dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext";
        System.out.println(lengthLongestPath(s));
    }

}